﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="StoryboardDesignerSchema" targetNamespace="http://schemas.microsoft.com/dsltools/StoryboardDesigner" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/dsltools/StoryboardDesigner" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!-- NamedElement -->
  <xsd:element name="NamedElement" abstract="true" type="NamedElement" />
  <xsd:complexType name="NamedElement" abstract="true" >
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" use="required" />
  </xsd:complexType>
  
  <!-- NamedElement Moniker -->
  <xsd:element name="NamedElementMoniker" abstract="true" type="NamedElementMoniker" />
  <xsd:complexType name="NamedElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for NamedElement instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Storyboard -->
  <xsd:element name="storyboard" type="Storyboard" substitutionGroup="NamedElement" />
  <xsd:complexType name="Storyboard">
    <xsd:complexContent>
      <xsd:extension base="NamedElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: StoryboardHasElements -->
          <xsd:element name="elements" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of StoryboardHasElements</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="storyboardHasElements">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from StoryboardHasElements needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="storyboardElement" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: StoryboardHasComments -->
          <xsd:element name="comments" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of StoryboardHasComments</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="storyboardHasComments">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from StoryboardHasComments needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="comment" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- dslVersion -->
        <xsd:attribute name="dslVersion" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: PublishLocation -->
        <xsd:attribute name="publishLocation" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Storyboard Moniker -->
  <xsd:element name="storyboardMoniker" type="StoryboardMoniker" substitutionGroup="NamedElementMoniker" />
  <xsd:complexType name="StoryboardMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Storyboard instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Component -->
  <xsd:element name="component" type="Component" substitutionGroup="storyboardElement" />
  <xsd:complexType name="Component">
    <xsd:complexContent>
      <xsd:extension base="StoryboardElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: ComponentParticpatesInScenarios -->
          <xsd:element name="scenarios" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ComponentParticpatesInScenarios</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="componentParticpatesInScenarios">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from ComponentParticpatesInScenarios needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="scenarioMoniker" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Property: ComponentType -->
        <xsd:attribute name="componentType" type="ComponentType" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Component Moniker -->
  <xsd:element name="componentMoniker" type="ComponentMoniker" substitutionGroup="storyboardElementMoniker" />
  <xsd:complexType name="ComponentMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Component instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Comment -->
  <xsd:element name="comment" type="Comment" />
  <xsd:complexType name="Comment">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: CommentReferencesElements -->
      <xsd:element name="elements" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of CommentReferencesElements</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="commentReferencesElements">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from CommentReferencesElements needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="storyboardElementMoniker" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Text -->
    <xsd:attribute name="text" type="xsd:string" />
  </xsd:complexType>
  
  <!-- Comment Moniker -->
  <xsd:element name="commentMoniker" type="CommentMoniker" />
  <xsd:complexType name="CommentMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Comment instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- StoryboardElement -->
  <xsd:element name="storyboardElement" type="StoryboardElement" substitutionGroup="NamedElement" />
  <xsd:complexType name="StoryboardElement">
    <xsd:complexContent>
      <xsd:extension base="NamedElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: StoryboardLink -->
          <xsd:element name="sources" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of StoryboardLink</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="storyboardLink" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of StoryboardLink needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Property: Title -->
        <xsd:attribute name="title" type="xsd:string" />
        <!-- Property: LinkedFile -->
        <xsd:attribute name="linkedFile" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StoryboardElement Moniker -->
  <xsd:element name="storyboardElementMoniker" type="StoryboardElementMoniker" substitutionGroup="NamedElementMoniker" />
  <xsd:complexType name="StoryboardElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StoryboardElement instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NamedElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Scenario -->
  <xsd:element name="scenario" type="Scenario" substitutionGroup="storyboardElement" />
  <xsd:complexType name="Scenario">
    <xsd:complexContent>
      <xsd:extension base="StoryboardElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: FlowIntoDecisionStep -->
          <xsd:element name="targetDecisionSteps" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of FlowIntoDecisionStep</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="flowIntoDecisionStep">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from FlowIntoDecisionStep needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="decisionStepMoniker" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: Specialize -->
          <xsd:element name="specializations" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of Specialize</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="specialize">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from Specialize needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="scenarioMoniker" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: Extend -->
          <xsd:element name="extensions" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of Extend</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="extend">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from Extend needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="scenarioMoniker" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Property: AssignedTo -->
        <xsd:attribute name="assignedTo" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Person responsible for driving this scenario</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Priority -->
        <xsd:attribute name="priority" type="xsd:integer" >
          <xsd:annotation>
            <xsd:documentation>Priority of this scenario relative to others</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Rank -->
        <xsd:attribute name="rank" type="xsd:integer" >
          <xsd:annotation>
            <xsd:documentation>Stack rank used to prioritize TFS work item</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: State -->
        <xsd:attribute name="state" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Associated TFS WorkItem State</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Action -->
        <xsd:attribute name="action" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Script describing the action(s) performed by participants in this step</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Snapshot -->
        <xsd:attribute name="snapshot" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Reference to Image showing user interactions</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Area -->
        <xsd:attribute name="area" type="xsd:string" />
        <!-- Property: Iteration -->
        <xsd:attribute name="iteration" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Scenario Moniker -->
  <xsd:element name="scenarioMoniker" type="ScenarioMoniker" substitutionGroup="storyboardElementMoniker" />
  <xsd:complexType name="ScenarioMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Scenario instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Persona -->
  <xsd:element name="persona" type="Persona" substitutionGroup="storyboardElement" />
  <xsd:complexType name="Persona">
    <xsd:complexContent>
      <xsd:extension base="StoryboardElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: PersonaPlaysRoleOfPersonae -->
          <xsd:element name="rolesPlayed" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of PersonaPlaysRoleOfPersonae</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="personaPlaysRoleOfPersonae">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from PersonaPlaysRoleOfPersonae needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="personaMoniker" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Property: Description -->
        <xsd:attribute name="description" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Persona Moniker -->
  <xsd:element name="personaMoniker" type="PersonaMoniker" substitutionGroup="storyboardElementMoniker" />
  <xsd:complexType name="PersonaMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Persona instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StartEvent -->
  <xsd:element name="startEvent" type="StartEvent" substitutionGroup="storyboardElement" />
  <xsd:complexType name="StartEvent">
    <xsd:complexContent>
      <xsd:extension base="StoryboardElement">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StartEvent Moniker -->
  <xsd:element name="startEventMoniker" type="StartEventMoniker" substitutionGroup="storyboardElementMoniker" />
  <xsd:complexType name="StartEventMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StartEvent instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StopEvent -->
  <xsd:element name="stopEvent" type="StopEvent" substitutionGroup="storyboardElement" />
  <xsd:complexType name="StopEvent">
    <xsd:complexContent>
      <xsd:extension base="StoryboardElement">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StopEvent Moniker -->
  <xsd:element name="stopEventMoniker" type="StopEventMoniker" substitutionGroup="storyboardElementMoniker" />
  <xsd:complexType name="StopEventMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StopEvent instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- DecisionStep -->
  <xsd:element name="decisionStep" type="DecisionStep" substitutionGroup="storyboardElement" />
  <xsd:complexType name="DecisionStep">
    <xsd:complexContent>
      <xsd:extension base="StoryboardElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: FlowFromDecisionToScenario -->
          <xsd:element name="targetScenarios" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of FlowFromDecisionToScenario</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="flowFromDecisionToScenario" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of FlowFromDecisionToScenario needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: FlowFromDecisionToDecision -->
          <xsd:element name="targetDecisionSteps" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of FlowFromDecisionToDecision</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="flowFromDecisionToDecision" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of FlowFromDecisionToDecision needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: FlowFromDecisionToStopEvent -->
          <xsd:element name="stopEvent" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instance of FlowFromDecisionToStopEvent</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="flowFromDecisionToStopEvent" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of FlowFromDecisionToStopEvent needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- DecisionStep Moniker -->
  <xsd:element name="decisionStepMoniker" type="DecisionStepMoniker" substitutionGroup="storyboardElementMoniker" />
  <xsd:complexType name="DecisionStepMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for DecisionStep instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ComponentConnection -->
  <xsd:element name="componentConnection" type="ComponentConnection" substitutionGroup="storyboardLink" />
  <xsd:complexType name="ComponentConnection">
    <xsd:complexContent>
      <xsd:extension base="StoryboardLink">
        <xsd:sequence minOccurs="0" maxOccurs="1">
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ComponentConnection Moniker -->
  <xsd:element name="componentConnectionMoniker" type="ComponentConnectionMoniker" substitutionGroup="storyboardLinkMoniker" />
  <xsd:complexType name="ComponentConnectionMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ComponentConnection instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardLinkMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StoryboardHasElements -->
  <xsd:element name="storyboardHasElements" abstract="true" type="StoryboardHasElements" />
  <xsd:complexType name="StoryboardHasElements" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end StoryboardElement -->
      <xsd:element ref="storyboardElement" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- StoryboardHasElements Moniker -->
  <xsd:element name="storyboardHasElementsMoniker" abstract="true" type="StoryboardHasElementsMoniker" />
  <xsd:complexType name="StoryboardHasElementsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StoryboardHasElements instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- StoryboardLink -->
  <xsd:element name="storyboardLink" type="StoryboardLink" />
  <xsd:complexType name="StoryboardLink">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end StoryboardElement -->
      <xsd:element ref="storyboardElementMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Label -->
    <xsd:attribute name="label" type="xsd:string" />
  </xsd:complexType>
  
  <!-- StoryboardLink Moniker -->
  <xsd:element name="storyboardLinkMoniker" type="StoryboardLinkMoniker" />
  <xsd:complexType name="StoryboardLinkMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StoryboardLink instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- PersonaParticipatesInScenarios -->
  <xsd:element name="personaParticipatesInScenarios" type="PersonaParticipatesInScenarios" substitutionGroup="storyboardLink" />
  <xsd:complexType name="PersonaParticipatesInScenarios">
    <xsd:complexContent>
      <xsd:extension base="StoryboardLink">
        <xsd:sequence minOccurs="0" maxOccurs="1">
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- PersonaParticipatesInScenarios Moniker -->
  <xsd:element name="personaParticipatesInScenariosMoniker" type="PersonaParticipatesInScenariosMoniker" substitutionGroup="storyboardLinkMoniker" />
  <xsd:complexType name="PersonaParticipatesInScenariosMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PersonaParticipatesInScenarios instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardLinkMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Flow -->
  <xsd:element name="flow" type="Flow" substitutionGroup="storyboardLink" />
  <xsd:complexType name="Flow">
    <xsd:complexContent>
      <xsd:extension base="StoryboardLink">
        <xsd:sequence minOccurs="0" maxOccurs="1">
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Flow Moniker -->
  <xsd:element name="flowMoniker" type="FlowMoniker" substitutionGroup="storyboardLinkMoniker" />
  <xsd:complexType name="FlowMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Flow instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardLinkMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ComponentParticpatesInScenarios -->
  <xsd:element name="componentParticpatesInScenarios" abstract="true" type="ComponentParticpatesInScenarios" />
  <xsd:complexType name="ComponentParticpatesInScenarios" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Scenario -->
      <xsd:element ref="scenarioMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- ComponentParticpatesInScenarios Moniker -->
  <xsd:element name="componentParticpatesInScenariosMoniker" abstract="true" type="ComponentParticpatesInScenariosMoniker" />
  <xsd:complexType name="ComponentParticpatesInScenariosMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ComponentParticpatesInScenarios instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- PersonaPlaysRoleOfPersonae -->
  <xsd:element name="personaPlaysRoleOfPersonae" abstract="true" type="PersonaPlaysRoleOfPersonae" />
  <xsd:complexType name="PersonaPlaysRoleOfPersonae" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Persona -->
      <xsd:element ref="personaMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- PersonaPlaysRoleOfPersonae Moniker -->
  <xsd:element name="personaPlaysRoleOfPersonaeMoniker" abstract="true" type="PersonaPlaysRoleOfPersonaeMoniker" />
  <xsd:complexType name="PersonaPlaysRoleOfPersonaeMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for PersonaPlaysRoleOfPersonae instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- StoryboardHasComments -->
  <xsd:element name="storyboardHasComments" abstract="true" type="StoryboardHasComments" />
  <xsd:complexType name="StoryboardHasComments" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Comment -->
      <xsd:element ref="comment" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- StoryboardHasComments Moniker -->
  <xsd:element name="storyboardHasCommentsMoniker" abstract="true" type="StoryboardHasCommentsMoniker" />
  <xsd:complexType name="StoryboardHasCommentsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StoryboardHasComments instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommentReferencesElements -->
  <xsd:element name="commentReferencesElements" abstract="true" type="CommentReferencesElements" />
  <xsd:complexType name="CommentReferencesElements" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end StoryboardElement -->
      <xsd:element ref="storyboardElementMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommentReferencesElements Moniker -->
  <xsd:element name="commentReferencesElementsMoniker" abstract="true" type="CommentReferencesElementsMoniker" />
  <xsd:complexType name="CommentReferencesElementsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommentReferencesElements instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- StartFlow -->
  <xsd:element name="startFlow" type="StartFlow" substitutionGroup="storyboardLink" />
  <xsd:complexType name="StartFlow">
    <xsd:complexContent>
      <xsd:extension base="StoryboardLink">
        <xsd:sequence minOccurs="0" maxOccurs="1">
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StartFlow Moniker -->
  <xsd:element name="startFlowMoniker" type="StartFlowMoniker" substitutionGroup="storyboardLinkMoniker" />
  <xsd:complexType name="StartFlowMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StartFlow instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardLinkMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StopFlow -->
  <xsd:element name="stopFlow" type="StopFlow" substitutionGroup="storyboardLink" />
  <xsd:complexType name="StopFlow">
    <xsd:complexContent>
      <xsd:extension base="StoryboardLink">
        <xsd:sequence minOccurs="0" maxOccurs="1">
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StopFlow Moniker -->
  <xsd:element name="stopFlowMoniker" type="StopFlowMoniker" substitutionGroup="storyboardLinkMoniker" />
  <xsd:complexType name="StopFlowMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StopFlow instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="StoryboardLinkMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- FlowIntoDecisionStep -->
  <xsd:element name="flowIntoDecisionStep" abstract="true" type="FlowIntoDecisionStep" />
  <xsd:complexType name="FlowIntoDecisionStep" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end DecisionStep -->
      <xsd:element ref="decisionStepMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- FlowIntoDecisionStep Moniker -->
  <xsd:element name="flowIntoDecisionStepMoniker" abstract="true" type="FlowIntoDecisionStepMoniker" />
  <xsd:complexType name="FlowIntoDecisionStepMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for FlowIntoDecisionStep instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- FlowFromDecisionToScenario -->
  <xsd:element name="flowFromDecisionToScenario" type="FlowFromDecisionToScenario" />
  <xsd:complexType name="FlowFromDecisionToScenario">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Scenario -->
      <xsd:element ref="scenarioMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: YesOrNo -->
    <xsd:attribute name="yesOrNo" type="YesOrNo" />
  </xsd:complexType>
  
  <!-- FlowFromDecisionToScenario Moniker -->
  <xsd:element name="flowFromDecisionToScenarioMoniker" abstract="true" type="FlowFromDecisionToScenarioMoniker" />
  <xsd:complexType name="FlowFromDecisionToScenarioMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for FlowFromDecisionToScenario instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- FlowFromDecisionToDecision -->
  <xsd:element name="flowFromDecisionToDecision" type="FlowFromDecisionToDecision" />
  <xsd:complexType name="FlowFromDecisionToDecision">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end DecisionStep -->
      <xsd:element ref="decisionStepMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: YesOrNo -->
    <xsd:attribute name="yesOrNo" type="YesOrNo" />
  </xsd:complexType>
  
  <!-- FlowFromDecisionToDecision Moniker -->
  <xsd:element name="flowFromDecisionToDecisionMoniker" abstract="true" type="FlowFromDecisionToDecisionMoniker" />
  <xsd:complexType name="FlowFromDecisionToDecisionMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for FlowFromDecisionToDecision instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- FlowFromDecisionToStopEvent -->
  <xsd:element name="flowFromDecisionToStopEvent" type="FlowFromDecisionToStopEvent" />
  <xsd:complexType name="FlowFromDecisionToStopEvent">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end StopEvent -->
      <xsd:element ref="stopEventMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: YesOrNo -->
    <xsd:attribute name="yesOrNo" type="YesOrNo" />
  </xsd:complexType>
  
  <!-- FlowFromDecisionToStopEvent Moniker -->
  <xsd:element name="flowFromDecisionToStopEventMoniker" abstract="true" type="FlowFromDecisionToStopEventMoniker" />
  <xsd:complexType name="FlowFromDecisionToStopEventMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for FlowFromDecisionToStopEvent instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Specialize -->
  <xsd:element name="specialize" abstract="true" type="Specialize" />
  <xsd:complexType name="Specialize" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Scenario -->
      <xsd:element ref="scenarioMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- Specialize Moniker -->
  <xsd:element name="specializeMoniker" abstract="true" type="SpecializeMoniker" />
  <xsd:complexType name="SpecializeMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Specialize instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Extend -->
  <xsd:element name="extend" abstract="true" type="Extend" />
  <xsd:complexType name="Extend" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Scenario -->
      <xsd:element ref="scenarioMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- Extend Moniker -->
  <xsd:element name="extendMoniker" abstract="true" type="ExtendMoniker" />
  <xsd:complexType name="ExtendMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Extend instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Enum Count -->
  <xsd:simpleType name="Count">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Many"/>
      <xsd:enumeration value="One"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum Multiplicity -->
  <xsd:simpleType name="Multiplicity">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Many"/>
      <xsd:enumeration value="ZeroOne"/>
      <xsd:enumeration value="ZeroMany"/>
      <xsd:enumeration value="One"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum YesOrNo -->
  <xsd:simpleType name="YesOrNo">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Yes"/>
      <xsd:enumeration value="No"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum ComponentType -->
  <xsd:simpleType name="ComponentType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Many"/>
      <xsd:enumeration value="DistributedApplication"/>
      <xsd:enumeration value="ExternalDatabase"/>
      <xsd:enumeration value="GenericApplication"/>
      <xsd:enumeration value="WebServer"/>
      <xsd:enumeration value="GenericServer"/>
      <xsd:enumeration value="OfficeApplication"/>
      <xsd:enumeration value="WebApplication"/>
      <xsd:enumeration value="WindowsApplication"/>
      <xsd:enumeration value="SQLServer"/>
      <xsd:enumeration value="WindowsHost"/>
      <xsd:enumeration value="ExternalBizTalkWebService"/>
      <xsd:enumeration value="ExternalWebService"/>
      <xsd:enumeration value="GenericComponent"/>
    </xsd:restriction>
  </xsd:simpleType>
  
</xsd:schema>

